/**
  ******************************************************************************
  * @author     Chris
  * @since      2023/10/2 19:20
  *
  * @file       hd_servo.c
  * @brief      Servo Hardware Driver.
  *
  * @note       This file contains the hardware driver for the Servo.
  *
  * @warning    None.
  ******************************************************************************
  * Change Logs:
  *   Date           Author       Notes
  *   2023-10-02     Chris        the first version
  *
  ******************************************************************************
  */


/** region declare function region */

/** region declare function region */


#include "stm32g4xx_ll_bus.h"
#include "pd_h_timer.h"
#include "stm32g4xx_ll_tim.h"

/** region public function region */

/**
 * @brief   直流电机初始化（使用 TIM15_CH1）
 *
 * @note    TB6612 直流电机控制芯片，PWMx 输入 PWM 信号，xIN1、xIN2 控制电机正反转。
 * @param   无
 * @retval  无
 */
void HD_MOTOR_Init(void) {
    PD_H_TIM15_PWMInit();
}

/**
 * @brief   直流电机速度控制
 *
 * @note
 * @param   speed 直流电机速度。取值范围为 -100~100
 * @retval  无
 */
void HD_MOTOR_SetSpeed(uint32_t Channel, int8_t speed) {
    PD_H_TIM15_SetPWMDuty(Channel, speed);
}

/**
 * @brief   运动
 *
 * @note
 * @param   speed 直流电机速度。取值范围为 -100~100
 * @retval  无
 */
void HD_MOTOR_Run(int8_t speed) {
    HD_MOTOR_SetSpeed(LL_TIM_CHANNEL_CH1, speed);
    HD_MOTOR_SetSpeed(LL_TIM_CHANNEL_CH2, speed);
}

/**
 * @brief   左转
 *
 * @note
 * @param   speed 直流电机速度。取值范围为 -100~100
 * @retval  无
 */
void HD_MOTOR_TurnLeft(int8_t speed) {
    HD_MOTOR_SetSpeed(LL_TIM_CHANNEL_CH1, 0);
    HD_MOTOR_SetSpeed(LL_TIM_CHANNEL_CH2, speed);
}

/**
 * @brief   右转
 *
 * @note
 * @param   speed 直流电机速度。取值范围为 -100~100
 * @retval  无
 */
void HD_MOTOR_TurnRight(int8_t speed) {
    HD_MOTOR_SetSpeed(LL_TIM_CHANNEL_CH1, speed);
    HD_MOTOR_SetSpeed(LL_TIM_CHANNEL_CH2, 0);
}



/** region public function region */


/** region private function region */

/** region private function region */
